package com.pubinfo.passbook.common.model.http.engine;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Collection;

/**
 * 计算链单元参数体
 *
 * @author zhouch
 * @date 2021/12/13 9:15
 */
@Data
public class ComputeChainParam {

    /**
     * 计算单元ID
     */
    @ApiModelProperty("计算单元ID, 如果该参为计算链则为-1")
    @NotEmpty(message = "计算单元ID不能为空")
    private Integer unitId;

    /**
     * 计算链ID
     */
    @ApiModelProperty("计算链ID")
    private Integer chainId;

    /**
     * 计算单元参数
     */
    @ApiModelProperty("计算单元参数")
    @NotNull(message = "计算单元参数如果不存在则输入一个空数组")
    private Collection<ComputeParam> paramBody;

    /**
     * 成功计算链 (逻辑计算单元使用)
     */
    @ApiModelProperty("成功计算链 (逻辑计算单元使用)")
    @NotNull(message = "如果不需要成功计算链则输入一个空数组")
    private Collection<ComputeChainParam> successful;

    /**
     * 失败计算链 (逻辑计算单元使用)
     */
    @ApiModelProperty("失败计算链 (逻辑计算单元使用)")
    @NotNull(message = "如果不需要失败计算链则输入一个空数组")
    private Collection<ComputeChainParam> failed;

    /**
     * 是否是计算链
     *
     * @return
     */
    public Boolean isChain() {
        return unitId == null || unitId == -1;
    }
}
